One of current trends of development in the data storage industry relates to methods and strategies for effective management of large scale and high capacity storage systems dealing with large volumes of stored data. One of the problems of managing the stored data is fragmentation of the physical storage space when considerable amounts of data objects are not stored each in respective contiguous storage space, but divided into a plurality of pieces. Accordingly, data that is sequential from the user's perspective may be randomly written in the storage space, thus causing a performance penalty when reading. Furthermore, when a data block is re-written and the old pointer to it is released, “garbage” blocks (i.e., blocks that do not contain valid data) are gradually accumulated. If not properly handled, this may soon lead to a complete depletion of free disk space available for writing new data.
Defragmentation processes attempt to reduce the fragmentation by physically reorganizing the contents of a storage device to store the pieces of each data object in a contiguous manner. Defragmentation and garbage collection processes also attempt to create larger regions of free space.
The problems of defragmentation/garbage collection in mass data storage have been recognized in the Prior Art and various systems have been developed to provide a solution as, for example:
US Patent Application No. 2010/180093 (Huber et al.) discloses various embodiments for rapid defragmentation of storage volumes in a computing environment. A plurality of source data sets is copied from the fragmented storage volume to a plurality of target data sets on an additional storage volume. The plurality of source data sets is placed on the additional storage volume as the plurality of target data sets in an un-fragmented order. A first volume serial number (VOLSER) of the fragmented storage volume is swapped with a second VOLSER of the additional storage volume. The fragmented storage volume is varied offline, and the additional storage volume is varied online. The computing environment recognizes the additional storage volume having the plurality of target data sets placed in the un-fragmented order.
US Patent Application No. 2007/168633 (English et al) discloses a method of operating a storage system including moving a block of data stored in the storage system to a new location in the storage system, such as for purposes of defragmentation. After the block has been moved to the new location, the storage system receives a request requiring access to the block. The storage system uses metadata appended to an identified block to detect that the block may have been relocated. The metadata can further be used to distinguish a block that has been relocated from a lost write.
US Patent Application No. 2009/055450 (Biller) discloses a method for determining file fragmentation and performing subsequent defragmentation, including measuring a file fragmentation factor, measuring a file extent distance factor, measuring a file fragmentation level, selecting a file stored as multiple extents on at least one disk, selecting a free space extent on the disk whose length most closely matches the length of the file, calculating a fragmentation level of the disk from a fragmentation factor and a file extent distance factor of free space extents or allocated space extents of the disk, calculating the effect that moving the file to the free space extent would have on the fragmentation level, and moving the file to the free space extent provided that doing so causes the fragmentation level to satisfy a criterion.
US Patent Application No. 2008/244210 (Vingralek et al.) discloses solutions for reducing the amount of fragmentation on a computer memory device. In an aspect, the application describes systems, methods and software for allocating storage space for variable-sized data chunks in a fashion that reduces or eliminates the need for periodic de-fragmentation of the memory device. In another aspect, the application describes solutions that provide for the dynamic re-allocation of existing data blocks on the memory device to provide contiguous available space that can be allocated for new data blocks.